package cn.edu.hitsz.compiler.asm;

public class Reg {

    private final String name;  // 寄存器的名称，类似 "x0", "t1" 等
    private final int id;       // 寄存器的编号，可以是寄存器在寄存器文件中的编号

    // 构造函数
    public Reg(String name, int id) {
        this.name = name;
        this.id = id;
    }

    // 获取寄存器的名称
    public String getName() {
        return name;
    }

    // 获取寄存器的编号
    public int getId() {
        return id;
    }

    // 重写 toString 方法，便于输出寄存器的名称
    @Override
    public String toString() {
        return name;
    }

    // 重写 equals 和 hashCode 方法，确保寄存器可以在集合中正确地比较和存储
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Reg reg = (Reg) obj;
        return id == reg.id && name.equals(reg.name);
    }

    @Override
    public int hashCode() {
        return 31 * name.hashCode() + id;
    }
}
